'use strict';

const { globalShortcut, app } = require('electron');
const Electron = require('ee-core/electron');
const { logger } = require('ee-core/log');

/**
 * 快捷键服务
 * @class
 */
class ShortcutService {
  constructor() {
    // 等待 app ready 后再注册快捷键
    if (app.isReady()) {
      this.registerGlobalShortcut();
    } else {
      app.on('ready', () => {
        this.registerGlobalShortcut();
      });
    }
  }

  /**
   * 注册全局快捷键
   */
  registerGlobalShortcut() {
    logger.info('[ShortcutService] 正在注册快捷键...');
    
    // 先注销所有快捷键，避免重复注册
    globalShortcut.unregisterAll();
    
    // 注册快捷键 (Windows 上使用 Alt+Space)
    try {
      globalShortcut.register('Alt+Space', () => {
        logger.info('[ShortcutService] 触发快捷键');
        const win = Electron.mainWindow;
        if (win) {
          if(win.isVisible()) {
            logger.info('[ShortcutService] 隐藏窗口');
            win.hide();
          } else {
            logger.info('[ShortcutService] 显示窗口');
            win.show();
            win.focus();
          }
        }
      });

      // 检查快捷键是否注册成功
      if (globalShortcut.isRegistered('Alt+Space')) {
        logger.info('[ShortcutService] 快捷键注册成功');
      } else {
        logger.error('[ShortcutService] 快捷键注册失败');
      }
    } catch (error) {
      logger.error('[ShortcutService] 快捷键注册错误:', error);
    }
  }

  /**
   * 注销快捷键
   */
  unregisterGlobalShortcut() {
    logger.info('[ShortcutService] 注销快捷键...');
    globalShortcut.unregisterAll();
  }
}

ShortcutService.toString = () => '[class ShortcutService]';
module.exports = ShortcutService; 